package com.jacob.androidstudy.javanote;

public class $01_Java的基本类型 {

	/**
	 * Java有8种基本类型
	 * 
	 */
	public static void main(String[] args) {
		/**
		 * 整型
		 * byte、short、int、long，全部都是有符号的。
		 * long型的数值后面要带L或l，16进制的数值前面要带0X或0x，8进制的数值前面要带0。
		 */
		byte b = 10; //byte类型长度为1字节
		short s = 10; //short类型长度为2字节
		int i1 = 10, i2 = 0xff, i3 = 07; //int类型长度为4字节
		long l = 10L; //long类型长度为8字节
		
		/**
		 * 浮点型
		 * float、double，全部都是有符号的。
		 * float类型的数值后要带F或f，double类型的数值后要带D或d，浮点数值后不带东西的默认为double。
		 * 由于2进制不能精确的描述0.1，在对浮点数准确度有要求时，请使用BigDecimal类。
		 */
		float f = 10.98f; //float类型长度为4字节
		double d1 = 10.98, d2 = 10.98d; //double类型长度为8字节
		/**
		 * 3种特殊的浮点数值
		 * Infinity（无穷大）、-Infinity、NaN。
		 * Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN分别代表三个值。
		 * 这三个值和其他值（包括他们自身）都不相等，必须用Double.isInfinite()、Double.isNaN()来判断三个值。
		 */
		System.out.println(10.0/0); //正数除以浮点数0，结果是Infinity。
		System.out.println(10/0.0); //正数除以浮点数0，结果是Infinity。
		System.out.println(-10/0.0); //负数除以浮点数0，结果是-Infinity。
		System.out.println(-10.0/0); //负数除以浮点数0，结果是-Infinity。
		System.out.println(0/0.0); //0除以浮点数0.0，结果是NaN。
		System.out.println(0.0/0); //0除以浮点数0.0，结果是NaN。
		System.out.println(10/0); //除以整数0，运行时会抛异常。
		
		/**
		 * 字符型
		 * char，采用Unicode编码。因为历史原因，强烈建议不要在编码时使用char类型。
		 */
		char c = 'A'; //char类型长度为2字节
		
		/**
		 * 布尔类型
		 * boolean，不能和整型之间互相转换。
		 */
		boolean b1 = true, b2 = false;
	}

}
